<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        html,
        body,
        #map {
            width: 100%;
            height: 100%;
            padding: 0;
            margin: 0
        }
        /* 隐藏图标 */
        
        #map {
            position: relative;
        }
        
        .anchorBL,
        .BMap_cpyCtrl {
            display: none;
        }
        
        .tools {
            position: absolute;
            left: 10px;
            top: 10px;
        }
    </style>
</head>

<body>
    <div id="map"></div>
    <div class="tools">
        <button id="start">开始动画</button>
        <button id="cancel">关闭动画</button>
    </div>
    <script>
        function init() {
            var map = new BMapGL.Map('map');
            var point = new BMapGL.Point(116.404, 39.915);
            map.centerAndZoom(point, 20);
            map.enableScrollWheelZoom(true); // 滑轮可滚动
            /* 
            地图视角动画类。
            ViewAnimation(keyFrames: Array<ViewAnimationKeyFrames>, opts: ViewAnimationOptions)	创建地图视角动画对象，通过关键帧的形式对动画进行定义
            */

            // 定义开始状态和结束状态
            var keyFrames = [{
                center: new BMapGL.Point(116.404, 39.915),
                zoom: 21,
                tilt: 50, // 倾斜
                heading: 0, // 旋转
                percentage: 0, // 状态--帧数
            }, {
                center: new BMapGL.Point(116.404, 39.915),
                zoom: 21,
                tilt: 50, // 倾斜
                heading: 100, // 旋转
                percentage: 0.5,
            }, {
                center: new BMapGL.Point(116.404, 39.915),
                zoom: 21,
                tilt: 50, // 倾斜
                heading: 200, // 旋转
                percentage: 1,
            }]
            var opts = {
                delay: 1000, // 延迟一秒开始
                duration: 3000, // 持续多长时间
                interation: 1, // 迭代的次数
            }
            var animation = new BMapGL.ViewAnimation(keyFrames, opts);
            // // 播放
            // map.startViewAnimation(animation)
            document.getElementById('start').addEventListener('click', function(e) {
                // 播放
                map.startViewAnimation(animation)
            })
            document.getElementById('cancel').addEventListener('click', function(e) {
                    // 停止
                    map.cancelViewAnimation(animation)
                })
                /* 
                事件	参数	描述
                animationstart	{}	动画开始时触发，如果配置了delay，则在delay后触发
                animationiterations	{}	当动画循环大于1次时，上一次结束既下一次开始时触发。最后一次循环结束时不触发
                animationend	{}	动画结束时触发，如果动画中途被终止，则不会触发
                animationcancel	{}	动画中途被终止时触发
                */
                // 监听
            animation.addEventListener('animationstart', function() {

            })
        }
        window.onload = function() {
            var script = document.createElement('script');
            script.src = 'https://api.map.baidu.com/api?type=webgl&v=1.0&ak=您的密匙C&callback=init'
            document.body.appendChild(script)
        }
    </script>
</body>

</html>